



<!doctype html>
<html lang="en" class="no-js">
  <head>
    
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width,initial-scale=1">
      <meta http-equiv="x-ua-compatible" content="ie=edge">
      
        <meta name="description" content="Distributed Computing for AI Made Simple">
      
      
      
        <meta name="author" content="Jiale Zhi">
      
      
        <meta name="lang:clipboard.copy" content="Copy to clipboard">
      
        <meta name="lang:clipboard.copied" content="Copied to clipboard">
      
        <meta name="lang:search.language" content="en">
      
        <meta name="lang:search.pipeline.stopwords" content="True">
      
        <meta name="lang:search.pipeline.trimmer" content="True">
      
        <meta name="lang:search.result.none" content="No matching documents">
      
        <meta name="lang:search.result.one" content="1 matching document">
      
        <meta name="lang:search.result.other" content="# matching documents">
      
        <meta name="lang:search.tokenizer" content="[\s\-]+">
      
      <link rel="shortcut icon" href="../img/favicon.ico">
      <meta name="generator" content="mkdocs-1.0.4, mkdocs-material-4.6.0">
    
    
      
        <title>Context - Fiber</title>
      
    
    
      <link rel="stylesheet" href="../assets/stylesheets/application.1b62728e.css">
      
        <link rel="stylesheet" href="../assets/stylesheets/application-palette.a8b3c06d.css">
      
      
        
        
        <meta name="theme-color" content="">
      
    
    
      <script src="../assets/javascripts/modernizr.268332fc.js"></script>
    
    
      
        <link href="https://fonts.gstatic.com" rel="preconnect" crossorigin>
        <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&display=fallback">
        <style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style>
      
    
    <link rel="stylesheet" href="../assets/fonts/material-icons.css">
    
    
    
      
    
    
  </head>
  
    
    
    <body dir="ltr" data-md-color-primary="white" data-md-color-accent="">
  
    <svg class="md-svg">
      <defs>
        
        
          <svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="__github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg>
        
      </defs>
    </svg>
    <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
    <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
    <label class="md-overlay" data-md-component="overlay" for="__drawer"></label>
    
      <a href="#pid" tabindex="1" class="md-skip">
        Skip to content
      </a>
    
    
      <header class="md-header" data-md-component="header">

    <nav class="md-header-nav md-grid">
        <div class="md-flex">
            <div class="md-flex__cell md-flex__cell--shrink">
                <a class="md-header-nav__button md-logo"
                   href=".." title="Fiber">
                    <img src="../img/fiber_logo.png" style="height:1.4rem;">
                </a>
            </div>
            <div class="md-flex__cell md-flex__cell--shrink">
                <label class="md-icon md-icon--menu md-header-nav__button" for="__drawer"></label>
            </div>
            <div class="md-flex__cell md-flex__cell--stretch">
                <div class="md-flex__ellipsis md-header-nav__title" data-md-component="title">
                    
                    <span class="md-header-nav__topic">
                    Context
                    </span>
                    
                </div>
            </div>
            <div class="md-flex__cell md-flex__cell--shrink">
                
                
                <label class="md-icon md-icon--search md-header-nav__button" for="__search"></label>
                
<div class="md-search" data-md-component="search" role="dialog">
  <label class="md-search__overlay" for="__search"></label>
  <div class="md-search__inner" role="search">
    <form class="md-search__form" name="search">
      <input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active">
      <label class="md-icon md-search__icon" for="__search"></label>
      <button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1">
        &#xE5CD;
      </button>
    </form>
    <div class="md-search__output">
      <div class="md-search__scrollwrap" data-md-scrollfix>
        <div class="md-search-result" data-md-component="result">
          <div class="md-search-result__meta">
            Type to start searching
          </div>
          <ol class="md-search-result__list"></ol>
        </div>
      </div>
    </div>
  </div>
</div>
                
                
            </div>
            
            <div class="md-flex__cell md-flex__cell--shrink">
                <div class="md-header-nav__source">
                    


  

<a href="https://github.com/uber/fiber/" title="Go to repository" class="md-source" data-md-source="github">
  
    <div class="md-source__icon">
      <svg viewBox="0 0 24 24" width="24" height="24">
        <use xlink:href="#__github" width="24" height="24"></use>
      </svg>
    </div>
  
  <div class="md-source__repository">
    uber/fiber
  </div>
</a>
                </div>
            </div>
            
        </div>
    </nav>
</header>
    
    <div class="md-container">
      
        
      
      
      <main class="md-main" role="main">
        <div class="md-main__inner md-grid" data-md-component="container">
          
            
              <div class="md-sidebar md-sidebar--primary" data-md-component="navigation">
                <div class="md-sidebar__scrollwrap">
                  <div class="md-sidebar__inner">
                    <nav class="md-nav md-nav--primary" data-md-level="0">
    <label class="md-nav__title md-nav__title--site" for="__drawer">
        <a class="md-nav__button md-logo" href=".."
           title="Fiber">
            <img src="../img/fiber_logo.png" style="width: 10rem">
        </a>
    </label>
    
    <div class="md-nav__source">
        


  

<a href="https://github.com/uber/fiber/" title="Go to repository" class="md-source" data-md-source="github">
  
    <div class="md-source__icon">
      <svg viewBox="0 0 24 24" width="24" height="24">
        <use xlink:href="#__github" width="24" height="24"></use>
      </svg>
    </div>
  
  <div class="md-source__repository">
    uber/fiber
  </div>
</a>
    </div>
    
    <ul class="md-nav__list" data-md-scrollfix>
        
        
        
        


  <li class="md-nav__item">
    <a href=".." title="Home" class="md-nav__link">
      Home
    </a>
  </li>

        
        
        
        


  <li class="md-nav__item">
    <a href="../why/" title="Why Use Fiber" class="md-nav__link">
      Why Use Fiber
    </a>
  </li>

        
        
        
        


  <li class="md-nav__item">
    <a href="../introduction/" title="Introduction to Fiber" class="md-nav__link">
      Introduction to Fiber
    </a>
  </li>

        
        
        
        


  <li class="md-nav__item">
    <a href="../getting-started/" title="Getting Started" class="md-nav__link">
      Getting Started
    </a>
  </li>

        
        
        
        


  <li class="md-nav__item">
    <a href="../advanced/" title="More about Fiber" class="md-nav__link">
      More about Fiber
    </a>
  </li>

        
        
        
        


  <li class="md-nav__item">
    <a href="../examples/" title="Examples" class="md-nav__link">
      Examples
    </a>
  </li>

        
        
        
        


  <li class="md-nav__item">
    <a href="../installation/" title="Installation" class="md-nav__link">
      Installation
    </a>
  </li>

        
        
        
        


  <li class="md-nav__item">
    <a href="../platforms/" title="Platforms and Backends" class="md-nav__link">
      Platforms and Backends
    </a>
  </li>

        
        
        
        


  <li class="md-nav__item md-nav__item--nested">
    
      <input class="md-toggle md-nav__toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9">
    
    <label class="md-nav__link" for="nav-9">
      API Documentation
    </label>
    <nav class="md-nav" data-md-component="collapsible" data-md-level="1">
      <label class="md-nav__title" for="nav-9">
        API Documentation
      </label>
      <ul class="md-nav__list" data-md-scrollfix>
        
        
          
          
          


  <li class="md-nav__item">
    <a href="../process/" title="Process" class="md-nav__link">
      Process
    </a>
  </li>

        
          
          
          


  <li class="md-nav__item">
    <a href="../queues/" title="Queues" class="md-nav__link">
      Queues
    </a>
  </li>

        
          
          
          


  <li class="md-nav__item">
    <a href="../pool/" title="Pool" class="md-nav__link">
      Pool
    </a>
  </li>

        
          
          
          


  <li class="md-nav__item">
    <a href="../managers/" title="Managers" class="md-nav__link">
      Managers
    </a>
  </li>

        
          
          
          


  <li class="md-nav__item">
    <a href="../experimental/ring/" title="Ring" class="md-nav__link">
      Ring
    </a>
  </li>

        
          
          
          


  <li class="md-nav__item">
    <a href="../config/" title="Config" class="md-nav__link">
      Config
    </a>
  </li>

        
          
          
          


  <li class="md-nav__item">
    <a href="../meta/" title="Metadata" class="md-nav__link">
      Metadata
    </a>
  </li>

        
          
          
          


  <li class="md-nav__item">
    <a href="../cli/" title="Command Line Tool" class="md-nav__link">
      Command Line Tool
    </a>
  </li>

        
          
          
          


  <li class="md-nav__item">
    <a href="../misc/" title="Misc" class="md-nav__link">
      Misc
    </a>
  </li>

        
      </ul>
    </nav>
  </li>

        
    </ul>
</nav>
                  </div>
                </div>
              </div>
            
            
              <div class="md-sidebar md-sidebar--secondary" data-md-component="toc">
                <div class="md-sidebar__scrollwrap">
                  <div class="md-sidebar__inner">
                    
<nav class="md-nav md-nav--secondary">
  
  
    
  
  
</nav>
                  </div>
                </div>
              </div>
            
          
          <div class="md-content">
            <article class="md-content__inner md-typeset">
              
                
                  <a href="https://github.com/uber/fiber/edit/master/mkdocs/context.md" title="Edit this page" class="md-icon md-content__icon">&#xE3C9;</a>
                
                
                <h1 id="fiber.context">fiber.context</h1>

<h2 id="fiber.context.FiberContext">FiberContext</h2>

<div class="codehilite"><pre><span></span><span class="n">FiberContext</span><span class="p">()</span>
</pre></div>


<h3 id="fiber.context.FiberContext.Manager">Manager</h3>

<div class="codehilite"><pre><span></span><span class="n">FiberContext</span><span class="o">.</span><span class="n">Manager</span><span class="p">()</span>
</pre></div>


<p>Returns a manager associated with a running server process</p>
<p>The managers methods such as <code>Lock()</code>, <code>Condition()</code> and <code>Queue()</code>
can be used to create shared objects.
<h3 id="fiber.context.FiberContext.Pool">Pool</h3></p>
<div class="codehilite"><pre><span></span><span class="n">FiberContext</span><span class="o">.</span><span class="n">Pool</span><span class="p">(</span><span class="n">processes</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
                  <span class="n">initializer</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
                  <span class="n">initargs</span><span class="o">=</span><span class="p">(),</span>
                  <span class="n">maxtasksperchild</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
                  <span class="n">error_handling</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
</pre></div>


<p>Returns a process pool object
<h3 id="fiber.context.FiberContext.SimpleQueue">SimpleQueue</h3></p>
<div class="codehilite"><pre><span></span><span class="n">FiberContext</span><span class="o">.</span><span class="n">SimpleQueue</span><span class="p">()</span>
</pre></div>


<p>Returns a queue object
<h3 id="fiber.context.FiberContext.active_children">active_children</h3></p>
<div class="codehilite"><pre><span></span><span class="n">FiberContext</span><span class="o">.</span><span class="n">active_children</span><span class="p">()</span>
</pre></div>


<p>Get a list of children processes of the current process.</p>
<p><strong>Returns</strong>:</p>
<p>A list of children processes.</p>
<p>Example:</p>
<div class="codehilite"><pre><span></span><span class="n">p</span> <span class="o">=</span> <span class="n">fiber</span><span class="o">.</span><span class="n">Process</span><span class="p">(</span><span class="n">target</span><span class="o">=</span><span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">,</span> <span class="n">args</span><span class="o">=</span><span class="p">(</span><span class="mi">10</span><span class="p">,))</span>
<span class="n">p</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
<span class="nb">print</span><span class="p">(</span><span class="n">fiber</span><span class="o">.</span><span class="n">active_children</span><span class="p">())</span>
</pre></div>


<h3 id="fiber.context.FiberContext.Pipe">Pipe</h3>

<div class="codehilite"><pre><span></span><span class="n">FiberContext</span><span class="o">.</span><span class="n">Pipe</span><span class="p">(</span><span class="n">duplex</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</pre></div>


<p>Returns two connection object connected by a pipe
<h3 id="fiber.context.FiberContext.current_process">current_process</h3></p>
<div class="codehilite"><pre><span></span><span class="n">FiberContext</span><span class="o">.</span><span class="n">current_process</span><span class="p">()</span>
</pre></div>


<p>Return a Process object representing the current process.</p>
<p>Example:</p>
<div class="codehilite"><pre><span></span><span class="nb">print</span><span class="p">(</span><span class="n">fiber</span><span class="o">.</span><span class="n">current_process</span><span class="p">())</span>
</pre></div>


<h3 id="fiber.context.FiberContext.Process">Process</h3>

<div class="codehilite"><pre><span></span><span class="n">FiberContext</span><span class="o">.</span><span class="n">Process</span><span class="p">(</span><span class="n">group</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
                     <span class="n">target</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
                     <span class="n">name</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
                     <span class="n">args</span><span class="o">=</span><span class="p">(),</span>
                     <span class="n">kwargs</span><span class="o">=</span><span class="p">{},</span>
                     <span class="o">*</span><span class="p">,</span>
                     <span class="n">daemon</span><span class="p">)</span>
</pre></div>


<p>Create and manage Fiber processes.</p>
<p>The API is compatible with Python's multiprocessing.Process, check
<a href="https://docs.python.org/3.6/library/multiprocessing.html#process-and-exceptions">here</a>
for multiprocessing's documents.</p>
<p>Example usage:</p>
<div class="codehilite"><pre><span></span><span class="n">p</span> <span class="o">=</span> <span class="n">Process</span><span class="p">(</span><span class="n">target</span><span class="o">=</span><span class="n">f</span><span class="p">,</span> <span class="n">args</span><span class="o">=</span><span class="p">(</span><span class="s1">&#39;Fiber&#39;</span><span class="p">,))</span>
<span class="n">p</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
</pre></div>


<hr />
<h4 id="pid">pid<a class="headerlink" href="#pid" title="Permanent link">&para;</a></h4>
<div class="codehilite"><pre><span></span>Process.pid
</pre></div>


<p>Return the current process PID. If the process hasn't been fully started,
the value will be <code>None</code>. This PID is assigned by Fiber and is different
from the operating system process PID. The value of <code>pid</code> is derived from
the job ID of the underlying job that runs this Fiber process.</p>
<h4 id="name">name<a class="headerlink" href="#name" title="Permanent link">&para;</a></h4>
<div class="codehilite"><pre><span></span>Process.name
</pre></div>


<p>Return the name of this Fiber process. This value need to be set before the
start of the Process.</p>
<p>Example:</p>
<div class="codehilite"><pre><span></span><span class="n">p</span> <span class="o">=</span> <span class="n">fiber</span><span class="o">.</span><span class="n">Process</span><span class="p">(</span><span class="n">target</span><span class="o">=</span><span class="nb">print</span><span class="p">,</span> <span class="n">args</span><span class="o">=</span><span class="p">(</span><span class="s2">&quot;demo&quot;</span><span class="p">))</span>
<span class="n">p</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="s2">&quot;DemoProcess&quot;</span>
</pre></div>


<h4 id="daemon">daemon<a class="headerlink" href="#daemon" title="Permanent link">&para;</a></h4>
<div class="codehilite"><pre><span></span>Process.daemon
</pre></div>


<p>In multiprocessing, if a process has daemon set, it will be terminated when
it's parent process exits. In Fiber, current this value has no effect, all
processes will be cleaned up when their parent exits.</p>
<h4 id="authkey">authkey<a class="headerlink" href="#authkey" title="Permanent link">&para;</a></h4>
<div class="codehilite"><pre><span></span>Process.authkey
</pre></div>


<p>Authkey is used to authenticate between parent and child processes. It is
a byte string.</p>
<h4 id="exitcode">exitcode<a class="headerlink" href="#exitcode" title="Permanent link">&para;</a></h4>
<div class="codehilite"><pre><span></span>Process.exitcode
</pre></div>


<p>The exit code of current process. If the process has not exited, the
exitcode is <code>None</code>. If the current process has exited, the value of this
is an integer.</p>
<h4 id="sentinel">sentinel<a class="headerlink" href="#sentinel" title="Permanent link">&para;</a></h4>
<div class="codehilite"><pre><span></span>Process.sentinel
</pre></div>


<p>Returns a file descriptor that becomes "ready" when the process exits. You
can call <code>select</code> and other eligible functions that works on fds on this
file descriptor.</p>
                
                  
                
                
              
              
                


              
            </article>
          </div>
        </div>
      </main>
      
        

<!-- Application footer -->
<footer class="md-footer">

    <!-- Link to previous and/or next page -->
    

    <!-- Further information -->
    <div class="md-footer-meta md-typeset">
        <div class="md-footer-meta__inner md-grid">

            <!-- Copyright and theme information -->
            <div class="md-footer-copyright">
                <div class="footer-logo-smallpad"></div>
                
                <div class="md-footer-copyright__highlight">
                    Copyright &copy; 2020 Uber Technologies Inc.
                </div>
                
                Website by <a href="https://twitter.com/_calio">calio</a> powered by
                <a href="https://www.mkdocs.org">MkDocs</a>,
                <a href="https://squidfunk.github.io/mkdocs-material/">Material for MkDocs</a>,
                <a href="http://www.styleshout.com/">styleshout</a>.
            </div>

            <!-- Social links -->
            
            
            
        </div>
    </div>
</footer>
      
    </div>
    
      <script src="../assets/javascripts/application.808e90bb.js"></script>
      
      <script>app.initialize({version:"1.0.4",url:{base:".."}})</script>
      
    
  </body>
</html>